package com.victor.core.util;

import java.math.BigDecimal;
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 去空
 */
public class UtilTrans {
    /**
     * 将对象转换为字符串
     */
    public static String transNullToString(Object obj, String defaultValue) {
        try {
            String temp = "";
            if (obj != null) {
                temp = String.valueOf(obj);
            } else {
                temp = String.valueOf(defaultValue);
            }
            return temp.trim();
        } catch (Exception e) {
            return defaultValue;
        }
    }

    /**
     * 将对象转换为double
     *
     * @param obj
     * @return
     * @author Jiabin.Zhao
     * @date 创建时间：2016年8月17日 上午10:30:49
     * @version 1.0
     * @parameter
     * @since
     */
    public static Double transNullToDouble(Object obj, Double defaultValue) {
        try {
            Double temp = 0d;
            if (obj != null) {
                temp = Double.valueOf(String.valueOf(obj));
            } else {
                temp = Double.valueOf(String.valueOf(defaultValue));
            }
            return temp;
        } catch (Exception e) {
            return defaultValue;
        }
    }

    /**
     * 将对象转换为double
     *
     * @param obj
     * @return
     * @author Jiabin.Zhao
     * @date 创建时间：2016年8月17日 上午10:30:49
     * @version 1.0
     * @parameter
     * @since
     */
    public static Double transNullToDouble(Object obj) {
        try {

            return new Double(obj.toString().trim());
        } catch (Exception e) {
            return 0d;
        }
    }

    /**
     * 将对象转换为字符串
     *
     * @param obj
     * @return
     * @author Jiabin.Zhao
     * @date 创建时间：2016年8月17日 上午10:30:49
     * @version 1.0
     * @parameter
     * @since
     */
    public static String transNullToString(Object obj) {
        try {
            String temp = "";
            if (obj != null) {
                temp = String.valueOf(obj);
            }
            return temp.trim();
        } catch (Exception e) {
            return "";
        }
    }

    /**
     * 将对象转换为Integer
     *
     * @param obj
     * @return
     * @author Jiabin.Zhao
     * @date 创建时间：2016年8月17日 上午10:30:49
     * @version 1.0
     * @parameter
     * @since
     */
    public static Integer transNullToInteger(Object obj) {
            Integer temp =0;
            if (ToolUtil.isNotEmpty(obj)) {
                temp = Integer.valueOf((String)obj);
            }
            return temp;
    }
    public static BigDecimal transNullToBigDecimal(Object obj) {
        try {
            return new BigDecimal(obj.toString());
        } catch (Exception e) {
            return BigDecimal.ZERO;
        }
    }

    /**
     * 将对象转换为long
     *
     * @param obj
     * @param defaultValue
     * @return
     * @author Jiabin.Zhao
     * @date 创建时间：2016年8月17日 上午10:31:12
     * @version 1.0
     * @parameter
     * @since
     */
    public static Long transNullToLong(Object obj, Long defaultValue) {
        try {
            Long temp = 0L;
            if (obj != null) {
                temp = Long.valueOf(String.valueOf(obj));
            } else {
                temp = Long.valueOf(String.valueOf(defaultValue));
            }
            return temp;
        } catch (Exception e) {
            return defaultValue;
        }
    }

    /**
     * 将对象转换为integer
     *
     * @param obj
     * @param defaultValue
     * @return
     * @author Jiabin.Zhao
     * @date 创建时间：2016年8月17日 上午10:31:12
     * @version 1.0
     * @parameter
     * @since
     */
    public static Integer transNullToInteger(Object obj, Integer defaultValue) {
        try {
            Integer temp = 0;
            if (obj != null) {
                temp = Integer.valueOf(String.valueOf(obj));
            } else {
                temp = Integer.valueOf(String.valueOf(defaultValue));
            }
            return temp;
        } catch (Exception e) {
            return defaultValue;
        }
    }

    /**
     * 将对象转换为long
     *
     * @param obj
     * @return
     * @author Jiabin.Zhao
     * @date 创建时间：2016年8月17日 上午10:31:12
     * @version 1.0
     * @parameter
     * @since
     */
    public static Long transNullToLong(Object obj) {
        try {
            Long temp = 0L;
            if (obj != null) {
                temp = Long.valueOf(String.valueOf(obj));
            }
            return temp;
        } catch (Exception e) {
            return 0L;
        }
    }

    /**
     * @Auther:Victor
     * @Description:对象转换成double型
     * @Date:Create in 9:53 2018/4/11
     * @Modified By:
     */
    public static Double transObjectToDouble(Object obj, Double defaultValue) {
        try {
            Double temp = 0D;
            if (obj != null) {
                temp = Double.valueOf(obj.toString());
            } else {
                temp = Double.valueOf(String.valueOf(defaultValue));
            }
            return temp;
        } catch (Exception e) {
            return 0D;
        }
    }

    /**
     * @Auther:Victor
     * @Description:对象转换成double型
     * @Date:Create in 9:53 2018/4/11
     * @Modified By:
     */
    public static Double transObjectToDouble(Object obj) {
        try {
            Double temp = null;
            if (obj != null) {
                temp = Double.valueOf(obj.toString());
            }
            return temp;
        } catch (Exception e) {
            return null;
        }
    }

    /**
     * 由字符型转换成日期型
     *
     * @param dateString
     * @param formatString
     * @return
     * @author Jiabin.Zhao
     * @date 创建时间：2016年8月17日 上午10:32:04
     * @version 1.0
     * @parameter
     * @since
     */
    public static Date transStringToDate(String dateString, String formatString) {
        SimpleDateFormat df = new SimpleDateFormat(formatString);
        ParsePosition pos = new ParsePosition(0);
        Date date;
        try {
            date = df.parse(dateString, pos);
            return date;
        } catch (Exception e) {
            return null;
        }
    }

    /**
     * 由日期型转换成字符型 yyyy-MM-dd
     *
     * @param date
     * @return
     * @author Jiabin.Zhao
     * @date 创建时间：2016年8月17日 上午10:32:24
     * @version 1.0
     * @parameter
     * @since
     */
    public static String transDateToString(Date date) {
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        String dateString;
        try {
            dateString = df.format(date);
            return dateString;
        } catch (Exception e) {
            return "";
        }
    }

    /**
     * 由日期型转换成字符型,带时分秒
     *
     * @param date
     * @return
     * @author Jiabin.Zhao
     * @date 创建时间：2016年8月17日 上午10:32:41
     * @version 1.0
     * @parameter
     * @since
     */
    public static String transDateToStringFull(Date date) {
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String dateString;
        try {
            dateString = df.format(date);
            return dateString;
        } catch (Exception e) {
            return "";
        }
    }

    /**
     * 由日期型转换成字符型,自定义
     *
     * @param date
     * @param formatString
     * @return
     * @author Jiabin.Zhao
     * @date 创建时间：2016年8月17日 上午10:32:48
     * @version 1.0
     * @parameter
     * @since
     */
    public static String transDateToString(Date date, String formatString) {
        try {
            SimpleDateFormat df = new SimpleDateFormat(formatString);
            String dateString;
            dateString = df.format(date);
            return dateString;
        } catch (Exception e) {
            return "";
        }
    }

    /**
     * String 转 timestamp
     *
     * @param data_str
     * @param pattern
     * @return
     */
    public static Timestamp transNullToTimestamp(String data_str, String pattern) {
        SimpleDateFormat sf = new SimpleDateFormat(pattern);
        try {
            Date date = sf.parse(data_str);
            return new Timestamp(date.getTime());
        } catch (ParseException e) {
            e.printStackTrace();
            return null;
        }
    }

}
